home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / TextEdit.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  37KB  |  961 lines

  1. /*
  2.      File:        TextEdit.h
  3.  
  4.      Contains:    TextEdit Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __TEXTEDIT__
  19. #define __TEXTEDIT__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __QUICKDRAW__
  25. #include <Quickdraw.h>
  26. #endif
  27. #ifndef __MIXEDMODE__
  28. #include <MixedMode.h>
  29. #endif
  30. #ifndef __TEXTOBJECTS__
  31. #include <TextObjects.h>
  32. #endif
  33. #ifndef __TEXTSERVICES__
  34. #include <TextServices.h>
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_IMPORT_SUPPORTED
  42. #pragma import on
  43. #endif
  44.  
  45. #if PRAGMA_ALIGN_SUPPORTED
  46. #pragma options align=mac68k
  47. #endif
  48.  
  49. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  50. typedef struct TERec TERec;
  51. typedef TERec *TEPtr;
  52. typedef TEPtr *TEHandle;
  53. /*
  54.         This ProcPtr uses register based parameters on the 68k and cannot
  55.         be written in or called from a high-level language without the help of
  56.         mixed mode or assembly glue.
  57.  
  58.             typedef pascal void (*HighHookProcPtr)(const Rect *r, TEPtr pTE);
  59.  
  60. */
  61. /*
  62.         This ProcPtr uses register based parameters on the 68k and cannot
  63.         be written in or called from a high-level language without the help of
  64.         mixed mode or assembly glue.
  65.  
  66.             typedef pascal Boolean (*EOLHookProcPtr)(char theChar, TEPtr pTE, TEHandle hTE);
  67.  
  68. */
  69. /*
  70.         This ProcPtr uses register based parameters on the 68k and cannot
  71.         be written in or called from a high-level language without the help of
  72.         mixed mode or assembly glue.
  73.  
  74.             typedef pascal void (*CaretHookProcPtr)(const Rect *r, TEPtr pTE);
  75.  
  76. */
  77. /*
  78.         This ProcPtr uses register based parameters on the 68k and cannot
  79.         be written in or called from a high-level language without the help of
  80.         mixed mode or assembly glue.
  81.  
  82.             typedef pascal unsigned short (*WidthHookProcPtr)(unsigned short textLen, unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  83.  
  84. */
  85. /*
  86.         This ProcPtr uses register based parameters on the 68k and cannot
  87.         be written in or called from a high-level language without the help of
  88.         mixed mode or assembly glue.
  89.  
  90.             typedef pascal unsigned short (*TextWidthHookProcPtr)(unsigned short textLen, unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  91.  
  92. */
  93. /*
  94.         This ProcPtr uses register based parameters on the 68k and cannot
  95.         be written in or called from a high-level language without the help of
  96.         mixed mode or assembly glue.
  97.  
  98.             typedef pascal unsigned short (*NWidthHookProcPtr)(unsigned short styleRunLen, unsigned short styleRunOffset, short slop, short direction, void *textBufferPtr, short *lineStart, TEPtr pTE, TEHandle hTE);
  99.  
  100. */
  101. /*
  102.         This ProcPtr uses register based parameters on the 68k and cannot
  103.         be written in or called from a high-level language without the help of
  104.         mixed mode or assembly glue.
  105.  
  106.             typedef pascal void (*DrawHookProcPtr)(unsigned short textOffset, unsigned short drawLen, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  107.  
  108. */
  109. /*
  110.         This ProcPtr uses register based parameters on the 68k and cannot
  111.         be written in or called from a high-level language without the help of
  112.         mixed mode or assembly glue.
  113.  
  114.             typedef pascal Boolean (*HitTestHookProcPtr)(unsigned short styleRunLen, unsigned short styleRunOffset, unsigned short slop, void *textBufferPtr, TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, Boolean *pixelInChar);
  115.  
  116. */
  117. /*
  118.         This ProcPtr uses register based parameters on the 68k and cannot
  119.         be written in or called from a high-level language without the help of
  120.         mixed mode or assembly glue.
  121.  
  122.             typedef pascal void (*TEFindWordProcPtr)(unsigned short currentPos, short caller, TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd);
  123.  
  124. */
  125. /*
  126.         This ProcPtr uses register based parameters on the 68k and cannot
  127.         be written in or called from a high-level language without the help of
  128.         mixed mode or assembly glue.
  129.  
  130.             typedef pascal void (*TERecalcProcPtr)(TEPtr pTE, unsigned short changeLength, unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar);
  131.  
  132. */
  133. /*
  134.         This ProcPtr uses register based parameters on the 68k and cannot
  135.         be written in or called from a high-level language without the help of
  136.         mixed mode or assembly glue.
  137.  
  138.             typedef pascal void (*TEDoTextProcPtr)(TEPtr pTE, unsigned short firstChar, unsigned short lastChar, short selector, GrafPtr *currentGrafPort, short *charPosition);
  139.  
  140. */
  141. /*
  142.         This ProcPtr uses register based parameters on the 68k and cannot
  143.         be written in or called from a high-level language without the help of
  144.         mixed mode or assembly glue.
  145.  
  146.             typedef pascal Boolean (*TEClickLoopProcPtr)(TEPtr pTE);
  147.  
  148. */
  149. /*
  150.         This ProcPtr uses register based parameters on the 68k and cannot
  151.         be written in or called from a high-level language without the help of
  152.         mixed mode or assembly glue.
  153.  
  154.             typedef pascal Boolean (*WordBreakProcPtr)(Ptr text, short charPos);
  155.  
  156. */
  157. /*
  158.     Important note about TEClickLoopProcPtr and WordBreakProcPtr
  159.  
  160.     At one point these were defined as returning the function result in the 
  161.     condition code Z-bit.  This was correct, in that it was what the 68K
  162.     implementation of TextEdit actually tested.  But, MixedMode had a different 
  163.     idea of what returning a boolean in the Z-bit meant.  MixedMode was setting
  164.     the Z-bit the complement of what was wanted.  
  165.     
  166.     Therefore, these ProcPtrs have been changed (back) to return the result in
  167.     register D0.  It turns out that for register based routines, 
  168.     MixedMode sets the Z-bit of the 68K emulator based on the contents 
  169.     of the return result register.  Thus we can get the Z-bit set correctly.  
  170.     
  171.     But, when TextEdit is recoded in PowerPC, if it calls a 68K ClickLoop
  172.     or WordBreak routine, register D0 had better have the result (in addition
  173.     to the Z-bit). Therefore all 68K apps should make sure their ClickLoop or
  174.     WordBreak routines set register D0 at the end.
  175. */
  176. /*
  177.     There is no function to get/set the low-mem for FindWordHook at 0x07F8.
  178.     This is because it is not a low-mem ProcPtr. That address is the entry
  179.     in the OS TrapTable for trap 0xA0FE.  You can use Get/SetTrapAddress to 
  180.     acccess it.    
  181. */
  182. /*
  183.     The following ProcPtrs cannot be written in or called from a high-level 
  184.     language without the help of mixed mode or assembly glue because they 
  185.     use the following parameter-passing conventions:
  186.  
  187.     typedef pascal void (*HighHookProcPtr)(const Rect *r, TEPtr pTE);
  188.     typedef pascal void (*CaretHookProcPtr)(const Rect *r, TEPtr pTE);
  189.  
  190.         In:
  191.             =>     r                        on stack
  192.             =>    pTE                        A3.L
  193.         Out:
  194.             none
  195.  
  196.     typedef pascal Boolean (*EOLHookProcPtr)(char theChar, TEPtr pTE, TEHandle hTE);
  197.  
  198.         In:
  199.             =>     theChar                    D0.B
  200.             =>    pTE                        A3.L
  201.             =>    hTE                        A4.L
  202.         Out:
  203.             <=    Boolean                    Z bit of the CCR
  204.  
  205.     typedef pascal unsigned short (*WidthHookProcPtr)(unsigned short textLen,
  206.      unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  207.     typedef pascal unsigned short (*TextWidthHookProcPtr)(unsigned short textLen,
  208.      unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  209.  
  210.         In:
  211.             =>     textLen                    D0.W
  212.             =>    textOffset                D1.W
  213.             =>    textBufferPtr            A0.L
  214.             =>    pTE                        A3.L
  215.             =>    hTE                        A4.L
  216.         Out:
  217.             <=    unsigned short            D1.W
  218.  
  219.     typedef pascal unsigned short (*NWidthHookProcPtr)(unsigned short styleRunLen,
  220.      unsigned short styleRunOffset, short slop, short direction, void *textBufferPtr, 
  221.      short *lineStart, TEPtr pTE, TEHandle hTE);
  222.  
  223.         In:
  224.             =>     styleRunLen                D0.W
  225.             =>    styleRunOffset            D1.W
  226.             =>    slop                    D2.W (low)
  227.             =>    direction                D2.W (high)
  228.             =>    textBufferPtr            A0.L
  229.             =>    lineStart                A2.L
  230.             =>    pTE                        A3.L
  231.             =>    hTE                        A4.L
  232.         Out:
  233.             <=    unsigned short            D1.W
  234.  
  235.     typedef pascal void (*DrawHookProcPtr)(unsigned short textOffset, unsigned short drawLen,
  236.      void *textBufferPtr, TEPtr pTE, TEHandle hTE);
  237.  
  238.         In:
  239.             =>     textOffset                D0.W
  240.             =>    drawLen                    D1.W
  241.             =>    textBufferPtr            A0.L
  242.             =>    pTE                        A3.L
  243.             =>    hTE                        A4.L
  244.         Out:
  245.             none
  246.  
  247.     typedef pascal Boolean (*HitTestHookProcPtr)(unsigned short styleRunLen,
  248.      unsigned short styleRunOffset, unsigned short slop, void *textBufferPtr,
  249.      TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, 
  250.      Boolean *pixelInChar);
  251.  
  252.         In:
  253.             =>     styleRunLen                D0.W
  254.             =>    styleRunOffset            D1.W
  255.             =>    slop                    D2.W
  256.             =>    textBufferPtr            A0.L
  257.             =>    pTE                        A3.L
  258.             =>    hTE                        A4.L
  259.         Out:
  260.             <=    pixelWidth                D0.W (low)
  261.             <=    Boolean                    D0.W (high)
  262.             <=    charOffset                D1.W
  263.             <=    pixelInChar                D2.W
  264.  
  265.     typedef pascal void (*TEFindWordProcPtr)(unsigned short currentPos, short caller, 
  266.      TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd);
  267.  
  268.         In:
  269.             =>     currentPos                D0.W
  270.             =>    caller                    D2.W
  271.             =>    pTE                        A3.L
  272.             =>    hTE                        A4.L
  273.         Out:
  274.             <=    wordStart                D0.W
  275.             <=    wordEnd                    D1.W
  276.  
  277.     typedef pascal void (*TERecalcProcPtr)(TEPtr pTE, unsigned short changeLength,
  278.        unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar);
  279.  
  280.         In:
  281.             =>     pTE                        A3.L
  282.             =>    changeLength            D7.W
  283.         Out:
  284.             <=    lineStart                D2.W
  285.             <=    firstChar                D3.W
  286.             <=    lastChar                D4.W
  287.  
  288.     typedef pascal void (*TEDoTextProcPtr)(TEPtr pTE, unsigned short firstChar, unsigned short lastChar,
  289.                          short selector, GrafPtr *currentGrafPort, short *charPosition);
  290.  
  291.         In:
  292.             =>     pTE                        A3.L
  293.             =>    firstChar                D3.W
  294.             =>    lastChar                D4.W
  295.             =>    selector                D7.W
  296.         Out:
  297.             <=    currentGrafPort            A0.L
  298.             <=    charPosition            D0.W
  299.             
  300. */
  301.  
  302. #if GENERATINGCFM
  303. typedef UniversalProcPtr HighHookUPP;
  304. typedef UniversalProcPtr EOLHookUPP;
  305. typedef UniversalProcPtr CaretHookUPP;
  306. typedef UniversalProcPtr WidthHookUPP;
  307. typedef UniversalProcPtr TextWidthHookUPP;
  308. typedef UniversalProcPtr NWidthHookUPP;
  309. typedef UniversalProcPtr DrawHookUPP;
  310. typedef UniversalProcPtr HitTestHookUPP;
  311. typedef UniversalProcPtr TEFindWordUPP;
  312. typedef UniversalProcPtr TERecalcUPP;
  313. typedef UniversalProcPtr TEDoTextUPP;
  314. typedef UniversalProcPtr TEClickLoopUPP;
  315. typedef UniversalProcPtr WordBreakUPP;
  316. #else
  317. typedef Register68kProcPtr HighHookUPP;
  318. typedef Register68kProcPtr EOLHookUPP;
  319. typedef Register68kProcPtr CaretHookUPP;
  320. typedef Register68kProcPtr WidthHookUPP;
  321. typedef Register68kProcPtr TextWidthHookUPP;
  322. typedef Register68kProcPtr NWidthHookUPP;
  323. typedef Register68kProcPtr DrawHookUPP;
  324. typedef Register68kProcPtr HitTestHookUPP;
  325. typedef Register68kProcPtr TEFindWordUPP;
  326. typedef Register68kProcPtr TERecalcUPP;
  327. typedef Register68kProcPtr TEDoTextUPP;
  328. typedef Register68kProcPtr TEClickLoopUPP;
  329. typedef Register68kProcPtr WordBreakUPP;
  330. #endif
  331. struct TERec {
  332.     Rect                             destRect;
  333.     Rect                             viewRect;
  334.     Rect                             selRect;
  335.     short                             lineHeight;
  336.     short                             fontAscent;
  337.     Point                             selPoint;
  338.     short                             selStart;
  339.     short                             selEnd;
  340.     short                             active;
  341.     WordBreakUPP                     wordBreak;
  342.     TEClickLoopUPP                     clickLoop;
  343.     long                             clickTime;
  344.     short                             clickLoc;
  345.     long                             caretTime;
  346.     short                             caretState;
  347.     short                             just;
  348.     short                             teLength;
  349.     Handle                             hText;
  350.     long                             hDispatchRec;                /* added to replace recalBack & recalLines.  it's a handle anyway */
  351.     short                             clikStuff;
  352.     short                             crOnly;
  353.     short                             txFont;
  354.     StyleField                         txFace;                        /*txFace is unpacked byte*/
  355.     short                             txMode;
  356.     short                             txSize;
  357.     GrafPtr                         inPort;
  358.     HighHookUPP                     highHook;
  359.     CaretHookUPP                     caretHook;
  360.     short                             nLines;
  361.     short                             lineStarts[16001];
  362. };
  363.  
  364.  
  365. enum {
  366.                                                                 /* Justification (word alignment) styles */
  367.     teJustLeft                    = 0,
  368.     teJustCenter                = 1,
  369.     teJustRight                    = -1,
  370.     teForceLeft                    = -2,                            /* new names for the Justification (word alignment) styles */
  371.     teFlushDefault                = 0,                            /*flush according to the line direction */
  372.     teCenter                    = 1,                            /*center justify (word alignment) */
  373.     teFlushRight                = -1,                            /*flush right for all scripts */
  374.     teFlushLeft                    = -2,                            /*flush left for all scripts */
  375.                                                                 /* Set/Replace style modes */
  376.     fontBit                        = 0,                            /*set font*/
  377.     faceBit                        = 1,                            /*set face*/
  378.     sizeBit                        = 2,                            /*set size*/
  379.     clrBit                        = 3,                            /*set color*/
  380.     addSizeBit                    = 4,                            /*add size mode*/
  381.     toggleBit                    = 5,                            /*set faces in toggle mode*/
  382.                                                                 /* TESetStyle/TEContinuousStyle modes */
  383.     doFont                        = 1,                            /* set font (family) number*/
  384.     doFace                        = 2,                            /*set character style*/
  385.     doSize                        = 4,                            /*set type size*/
  386.     doColor                        = 8,                            /*set color*/
  387.     doAll                        = 15,                            /*set all attributes*/
  388.     addSize                        = 16                            /*adjust type size*/
  389. };
  390.  
  391.  
  392. enum {
  393.     doToggle                    = 32,                            /*toggle mode for TESetStyle*/
  394.                                                                 /* offsets into TEDispatchRec */
  395.     EOLHook                        = 0,                            /*[UniversalProcPtr] TEEOLHook*/
  396.     DRAWHook                    = 4,                            /*[UniversalProcPtr] TEWidthHook*/
  397.     WIDTHHook                    = 8,                            /*[UniversalProcPtr] TEDrawHook*/
  398.     HITTESTHook                    = 12,                            /*[UniversalProcPtr] TEHitTestHook*/
  399.     nWIDTHHook                    = 24,                            /*[UniversalProcPtr] nTEWidthHook*/
  400.     TextWidthHook                = 28,                            /*[UniversalProcPtr] TETextWidthHook*/
  401.                                                                 /* selectors for TECustomHook */
  402.     intEOLHook                    = 0,                            /*TEIntHook value*/
  403.     intDrawHook                    = 1,                            /*TEIntHook value*/
  404.     intWidthHook                = 2,                            /*TEIntHook value*/
  405.     intHitTestHook                = 3,                            /*TEIntHook value*/
  406.     intNWidthHook                = 6,                            /*TEIntHook value for new version of WidthHook*/
  407.     intTextWidthHook            = 7,                            /*TEIntHook value for new TextWidthHook*/
  408.     intInlineInputTSMTEPreUpdateHook = 8,                        /*TEIntHook value for TSMTEPreUpdateProcPtr callback*/
  409.     intInlineInputTSMTEPostUpdateHook = 9,                        /*TEIntHook value for TSMTEPostUpdateProcPtr callback*/
  410.                                                                 /* feature or bit definitions for TEFeatureFlag */
  411.     teFAutoScroll                = 0,                            /*00000001b*/
  412.     teFTextBuffering            = 1,                            /*00000010b*/
  413.     teFOutlineHilite            = 2,                            /*00000100b*/
  414.     teFInlineInput                = 3,                            /*00001000b */
  415.                                                                 /*    teFUseTextServices    is obsolete as of System 8.                    */
  416.     teFUseInlineInput            = 5,                            /*00100000b */
  417.     teFInlineInputAutoScroll    = 6                                /*01000000b */
  418. };
  419.  
  420.  
  421. enum {
  422.                                                                 /* action for the new "bit (un)set" interface, TEFeatureFlag */
  423.     teBitClear                    = 0,
  424.     teBitSet                    = 1,                            /*set the selector bit*/
  425.     teBitTest                    = -1,                            /*no change; just return the current setting*/
  426.                                                                 /*constants for identifying the routine that called FindWord */
  427.     teWordSelect                = 4,                            /*clickExpand to select word*/
  428.     teWordDrag                    = 8,                            /*clickExpand to drag new word*/
  429.     teFromFind                    = 12,                            /*FindLine called it ($0C)*/
  430.     teFromRecal                    = 16,                            /*RecalLines called it ($10)      obsolete */
  431.                                                                 /*constants for identifying TEDoText selectors */
  432.     teFind                        = 0,                            /*TEDoText called for searching*/
  433.     teHighlight                    = 1,                            /*TEDoText called for highlighting*/
  434.     teDraw                        = -1,                            /*TEDoText called for drawing text*/
  435.     teCaret                        = -2                            /*TEDoText called for drawing the caret*/
  436. };
  437.  
  438. typedef char Chars[32001];
  439. typedef char *CharsPtr;
  440. typedef CharsPtr *CharsHandle;
  441. struct StyleRun {
  442.     short                             startChar;                    /*starting character position*/
  443.     short                             styleIndex;                    /*index in style table*/
  444. };
  445. typedef struct StyleRun StyleRun;
  446.  
  447. struct STElement {
  448.     short                             stCount;                    /*number of runs in this style*/
  449.     short                             stHeight;                    /*line height*/
  450.     short                             stAscent;                    /*font ascent*/
  451.     short                             stFont;                        /*font (family) number*/
  452.     StyleField                         stFace;                        /*character Style*/
  453.     short                             stSize;                        /*size in points*/
  454.     RGBColor                         stColor;                    /*absolute (RGB) color*/
  455. };
  456. typedef struct STElement STElement;
  457.  
  458. typedef STElement TEStyleTable[1777];
  459. typedef STElement *STPtr;
  460. typedef STPtr *STHandle;
  461. struct LHElement {
  462.     short                             lhHeight;                    /*maximum height in line*/
  463.     short                             lhAscent;                    /*maximum ascent in line*/
  464. };
  465. typedef struct LHElement LHElement;
  466.  
  467. typedef LHElement LHTable[8001];
  468. typedef LHElement *LHPtr;
  469. typedef LHPtr *LHHandle;
  470. struct ScrpSTElement {
  471.     long                             scrpStartChar;                /*starting character position*/
  472.     short                             scrpHeight;
  473.     short                             scrpAscent;
  474.     short                             scrpFont;
  475.     StyleField                         scrpFace;                    /*unpacked byte*/
  476.     short                             scrpSize;
  477.     RGBColor                         scrpColor;
  478. };
  479. typedef struct ScrpSTElement ScrpSTElement;
  480.  
  481. /* ARRAY [0..1600] OF ScrpSTElement */
  482. typedef ScrpSTElement ScrpSTTable[1601];
  483. struct StScrpRec {
  484.     short                             scrpNStyles;                /*number of styles in scrap*/
  485.     ScrpSTTable                     scrpStyleTab;                /*table of styles for scrap*/
  486. };
  487. typedef struct StScrpRec StScrpRec;
  488.  
  489. typedef StScrpRec *StScrpPtr;
  490. typedef StScrpPtr *StScrpHandle;
  491. struct NullStRec {
  492.     long                             teReserved;                    /*reserved for future expansion*/
  493.     StScrpHandle                     nullScrap;                    /*handle to scrap style table*/
  494. };
  495. typedef struct NullStRec NullStRec;
  496.  
  497. typedef NullStRec *NullStPtr;
  498. typedef NullStPtr *NullStHandle;
  499. struct TEStyleRec {
  500.     short                             nRuns;                        /*number of style runs*/
  501.     short                             nStyles;                    /*size of style table*/
  502.     STHandle                         styleTab;                    /*handle to style table*/
  503.     LHHandle                         lhTab;                        /*handle to line-height table*/
  504.     long                             teRefCon;                    /*reserved for application use*/
  505.     NullStHandle                     nullStyle;                    /*Handle to style set at null selection*/
  506.     StyleRun                         runs[8001];                    /*ARRAY [0..8000] OF StyleRun*/
  507. };
  508. typedef struct TEStyleRec TEStyleRec;
  509.  
  510. typedef TEStyleRec *TEStylePtr;
  511. typedef TEStylePtr *TEStyleHandle;
  512. struct TextStyle {
  513.     short                             tsFont;                        /*font (family) number*/
  514.     StyleField                         tsFace;                        /*character Style*/
  515.     short                             tsSize;                        /*size in point*/
  516.     RGBColor                         tsColor;                    /*absolute (RGB) color*/
  517. };
  518. typedef struct TextStyle TextStyle;
  519.  
  520. typedef TextStyle *TextStylePtr;
  521. typedef TextStylePtr *TextStyleHandle;
  522. typedef short TEIntHook;
  523.  
  524. #if GENERATINGCFM
  525. #else
  526. #endif
  527.  
  528. enum {
  529.     uppHighHookProcInfo = SPECIAL_CASE_PROCINFO(0),
  530.     uppEOLHookProcInfo = SPECIAL_CASE_PROCINFO(1),
  531.     uppCaretHookProcInfo = SPECIAL_CASE_PROCINFO(0),
  532.     uppWidthHookProcInfo = SPECIAL_CASE_PROCINFO(2),
  533.     uppTextWidthHookProcInfo = SPECIAL_CASE_PROCINFO(2),
  534.     uppNWidthHookProcInfo = SPECIAL_CASE_PROCINFO(3),
  535.     uppDrawHookProcInfo = SPECIAL_CASE_PROCINFO(4),
  536.     uppHitTestHookProcInfo = SPECIAL_CASE_PROCINFO(5),
  537.     uppTEFindWordProcInfo = SPECIAL_CASE_PROCINFO(6),
  538.     uppTERecalcProcInfo = SPECIAL_CASE_PROCINFO(9),
  539.     uppTEDoTextProcInfo = SPECIAL_CASE_PROCINFO(10),
  540.     uppTEClickLoopProcInfo = kRegisterBased
  541.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  542.          | REGISTER_RESULT_LOCATION(kRegisterD0)
  543.          | REGISTER_ROUTINE_PARAMETER(1, kRegisterA3, SIZE_CODE(sizeof(TEPtr))),
  544.     uppWordBreakProcInfo = kRegisterBased
  545.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  546.          | REGISTER_RESULT_LOCATION(kRegisterD0)
  547.          | REGISTER_ROUTINE_PARAMETER(1, kRegisterA0, SIZE_CODE(sizeof(Ptr)))
  548.          | REGISTER_ROUTINE_PARAMETER(2, kRegisterD0, SIZE_CODE(sizeof(short)))
  549. };
  550.  
  551. #if GENERATINGCFM
  552. #define NewHighHookProc(userRoutine)        \
  553.         (HighHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppHighHookProcInfo, GetCurrentArchitecture())
  554. #define NewEOLHookProc(userRoutine)        \
  555.         (EOLHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppEOLHookProcInfo, GetCurrentArchitecture())
  556. #define NewCaretHookProc(userRoutine)        \
  557.         (CaretHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppCaretHookProcInfo, GetCurrentArchitecture())
  558. #define NewWidthHookProc(userRoutine)        \
  559.         (WidthHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppWidthHookProcInfo, GetCurrentArchitecture())
  560. #define NewTextWidthHookProc(userRoutine)        \
  561.         (TextWidthHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTextWidthHookProcInfo, GetCurrentArchitecture())
  562. #define NewNWidthHookProc(userRoutine)        \
  563.         (NWidthHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppNWidthHookProcInfo, GetCurrentArchitecture())
  564. #define NewDrawHookProc(userRoutine)        \
  565.         (DrawHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDrawHookProcInfo, GetCurrentArchitecture())
  566. #define NewHitTestHookProc(userRoutine)        \
  567.         (HitTestHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppHitTestHookProcInfo, GetCurrentArchitecture())
  568. #define NewTEFindWordProc(userRoutine)        \
  569.         (TEFindWordUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEFindWordProcInfo, GetCurrentArchitecture())
  570. #define NewTERecalcProc(userRoutine)        \
  571.         (TERecalcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTERecalcProcInfo, GetCurrentArchitecture())
  572. #define NewTEDoTextProc(userRoutine)        \
  573.         (TEDoTextUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEDoTextProcInfo, GetCurrentArchitecture())
  574. #define NewTEClickLoopProc(userRoutine)        \
  575.         (TEClickLoopUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEClickLoopProcInfo, GetCurrentArchitecture())
  576. #define NewWordBreakProc(userRoutine)        \
  577.         (WordBreakUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppWordBreakProcInfo, GetCurrentArchitecture())
  578. #else
  579. #define NewHighHookProc(userRoutine)        \
  580.         ((HighHookUPP) (userRoutine))
  581. #define NewEOLHookProc(userRoutine)        \
  582.         ((EOLHookUPP) (userRoutine))
  583. #define NewCaretHookProc(userRoutine)        \
  584.         ((CaretHookUPP) (userRoutine))
  585. #define NewWidthHookProc(userRoutine)        \
  586.         ((WidthHookUPP) (userRoutine))
  587. #define NewTextWidthHookProc(userRoutine)        \
  588.         ((TextWidthHookUPP) (userRoutine))
  589. #define NewNWidthHookProc(userRoutine)        \
  590.         ((NWidthHookUPP) (userRoutine))
  591. #define NewDrawHookProc(userRoutine)        \
  592.         ((DrawHookUPP) (userRoutine))
  593. #define NewHitTestHookProc(userRoutine)        \
  594.         ((HitTestHookUPP) (userRoutine))
  595. #define NewTEFindWordProc(userRoutine)        \
  596.         ((TEFindWordUPP) (userRoutine))
  597. #define NewTERecalcProc(userRoutine)        \
  598.         ((TERecalcUPP) (userRoutine))
  599. #define NewTEDoTextProc(userRoutine)        \
  600.         ((TEDoTextUPP) (userRoutine))
  601. #define NewTEClickLoopProc(userRoutine)        \
  602.         ((TEClickLoopUPP) (userRoutine))
  603. #define NewWordBreakProc(userRoutine)        \
  604.         ((WordBreakUPP) (userRoutine))
  605. #endif
  606.  
  607. #if GENERATINGCFM
  608. #define CallHighHookProc(userRoutine, r, pTE)        \
  609.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppHighHookProcInfo, (r), (pTE))
  610. #define CallEOLHookProc(userRoutine, theChar, pTE, hTE)        \
  611.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppEOLHookProcInfo, (theChar), (pTE), (hTE))
  612. #define CallCaretHookProc(userRoutine, r, pTE)        \
  613.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppCaretHookProcInfo, (r), (pTE))
  614. #define CallWidthHookProc(userRoutine, textLen, textOffset, textBufferPtr, pTE, hTE)        \
  615.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppWidthHookProcInfo, (textLen), (textOffset), (textBufferPtr), (pTE), (hTE))
  616. #define CallTextWidthHookProc(userRoutine, textLen, textOffset, textBufferPtr, pTE, hTE)        \
  617.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTextWidthHookProcInfo, (textLen), (textOffset), (textBufferPtr), (pTE), (hTE))
  618. #define CallNWidthHookProc(userRoutine, styleRunLen, styleRunOffset, slop, direction, textBufferPtr, lineStart, pTE, hTE)        \
  619.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppNWidthHookProcInfo, (styleRunLen), (styleRunOffset), (slop), (direction), (textBufferPtr), (lineStart), (pTE), (hTE))
  620. #define CallDrawHookProc(userRoutine, textOffset, drawLen, textBufferPtr, pTE, hTE)        \
  621.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDrawHookProcInfo, (textOffset), (drawLen), (textBufferPtr), (pTE), (hTE))
  622. #define CallHitTestHookProc(userRoutine, styleRunLen, styleRunOffset, slop, textBufferPtr, pTE, hTE, pixelWidth, charOffset, pixelInChar)        \
  623.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppHitTestHookProcInfo, (styleRunLen), (styleRunOffset), (slop), (textBufferPtr), (pTE), (hTE), (pixelWidth), (charOffset), (pixelInChar))
  624. #define CallTEFindWordProc(userRoutine, currentPos, caller, pTE, hTE, wordStart, wordEnd)        \
  625.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTEFindWordProcInfo, (currentPos), (caller), (pTE), (hTE), (wordStart), (wordEnd))
  626. #define CallTERecalcProc(userRoutine, pTE, changeLength, lineStart, firstChar, lastChar)        \
  627.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTERecalcProcInfo, (pTE), (changeLength), (lineStart), (firstChar), (lastChar))
  628. #define CallTEDoTextProc(userRoutine, pTE, firstChar, lastChar, selector, currentGrafPort, charPosition)        \
  629.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTEDoTextProcInfo, (pTE), (firstChar), (lastChar), (selector), (currentGrafPort), (charPosition))
  630. #define CallTEClickLoopProc(userRoutine, pTE)        \
  631.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTEClickLoopProcInfo, (pTE))
  632. #define CallWordBreakProc(userRoutine, text, charPos)        \
  633.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppWordBreakProcInfo, (text), (charPos))
  634. #else
  635. /* (*HighHookUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  636. /* (*EOLHookUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  637. /* (*CaretHookUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  638. /* (*WidthHookUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  639. /* (*TextWidthHookUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  640. /* (*NWidthHookUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  641. /* (*DrawHookUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  642. /* (*HitTestHookUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  643. /* (*TEFindWordUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  644. /* (*TERecalcUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  645. /* (*TEDoTextUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  646. /* (*TEClickLoopUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  647. /* (*WordBreakUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  648. #endif
  649. #endif
  650. #if FOR_SYSTEM8_COOPERATIVE
  651. typedef pascal void (*TEPreUpdateProcPtr)(TEHandle textH, TSMContext context, long refCon);
  652. typedef pascal void (*TEPostUpdateProcPtr)(TEHandle textH, TSMContext context, TextObject theText, long fixLen, long inputAreaStart, long inputAreaEnd, long pinStart, long pinEnd, long refCon);
  653.  
  654. #if GENERATINGCFM
  655. typedef UniversalProcPtr TEPreUpdateUPP;
  656. typedef UniversalProcPtr TEPostUpdateUPP;
  657. #else
  658. typedef TEPreUpdateProcPtr TEPreUpdateUPP;
  659. typedef TEPostUpdateProcPtr TEPostUpdateUPP;
  660. #endif
  661.  
  662. #if GENERATINGCFM
  663. #else
  664. #endif
  665.  
  666. enum {
  667.     uppTEPreUpdateProcInfo = kPascalStackBased
  668.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(TEHandle)))
  669.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(TSMContext)))
  670.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  671.     uppTEPostUpdateProcInfo = kPascalStackBased
  672.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(TEHandle)))
  673.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(TSMContext)))
  674.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(TextObject)))
  675.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  676.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long)))
  677.          | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(long)))
  678.          | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(long)))
  679.          | STACK_ROUTINE_PARAMETER(8, SIZE_CODE(sizeof(long)))
  680.          | STACK_ROUTINE_PARAMETER(9, SIZE_CODE(sizeof(long)))
  681. };
  682.  
  683. #if GENERATINGCFM
  684. #define NewTEPreUpdateProc(userRoutine)        \
  685.         (TEPreUpdateUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEPreUpdateProcInfo, GetCurrentArchitecture())
  686. #define NewTEPostUpdateProc(userRoutine)        \
  687.         (TEPostUpdateUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEPostUpdateProcInfo, GetCurrentArchitecture())
  688. #else
  689. #define NewTEPreUpdateProc(userRoutine)        \
  690.         ((TEPreUpdateUPP) (userRoutine))
  691. #define NewTEPostUpdateProc(userRoutine)        \
  692.         ((TEPostUpdateUPP) (userRoutine))
  693. #endif
  694.  
  695. #if GENERATINGCFM
  696. #define CallTEPreUpdateProc(userRoutine, textH, context, refCon)        \
  697.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTEPreUpdateProcInfo, (textH), (context), (refCon))
  698. #define CallTEPostUpdateProc(userRoutine, textH, context, theText, fixLen, inputAreaStart, inputAreaEnd, pinStart, pinEnd, refCon)        \
  699.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTEPostUpdateProcInfo, (textH), (context), (theText), (fixLen), (inputAreaStart), (inputAreaEnd), (pinStart), (pinEnd), (refCon))
  700. #else
  701. #define CallTEPreUpdateProc(userRoutine, textH, context, refCon)        \
  702.         (*(userRoutine))((textH), (context), (refCon))
  703. #define CallTEPostUpdateProc(userRoutine, textH, context, theText, fixLen, inputAreaStart, inputAreaEnd, pinStart, pinEnd, refCon)        \
  704.         (*(userRoutine))((textH), (context), (theText), (fixLen), (inputAreaStart), (inputAreaEnd), (pinStart), (pinEnd), (refCon))
  705. #endif
  706.  
  707. enum {
  708.                                                                 /* feature or bit definitions for TEFeatureFlag System 8 */
  709.     teFEnableInteractiveServices = 7,                            /*10000000b */
  710.                                                                 /* selectors for TECustomHook */
  711.     intInlineInputPreUpdateHook    = 10,                            /*TEIntHook value for TEPreUpdateProcPtr callback*/
  712.     intInlineInputPostUpdateHook = 11                            /*TEIntHook value for TEPostUpdateProcPtr callback*/
  713. };
  714.  
  715. #endif
  716. #if FOR_SYSTEM7_ONLY
  717.  
  718. enum {
  719.                                                                 /* feature bit 4 for TEFeatureFlag no longer in use */
  720.     teFUseTextServices            = 4                                /*00010000b */
  721. };
  722.  
  723. #endif
  724. #if OLDROUTINENAMES
  725. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  726. /* action for the old C "bit (un)set" interface, TEFeatureFlag */
  727. #define TEBitClear    teBitClear
  728. #define TEBitSet     teBitSet
  729. #define TEBitTest    teBitTest
  730. #define teFAutoScr    teFAutoScroll
  731. #define toglBit        toggleBit
  732. #endif
  733. #endif
  734. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  735. extern pascal Handle TEScrapHandle(void)
  736.  TWOWORDINLINE(0x2EB8, 0x0AB4);
  737.  
  738. #if GENERATINGCFM
  739. extern pascal long TEGetScrapLength(void );
  740.  
  741. #else
  742. #define TEGetScrapLength() ((long) * (unsigned short *) 0x0AB0)
  743. #endif
  744. extern pascal void TEInit(void )
  745.  ONEWORDINLINE(0xA9CC);
  746.  
  747. extern pascal TEHandle TENew(const Rect *destRect, const Rect *viewRect)
  748.  ONEWORDINLINE(0xA9D2);
  749.  
  750. extern pascal void TEDispose(TEHandle hTE)
  751.  ONEWORDINLINE(0xA9CD);
  752.  
  753. extern pascal void TESetText(const void *text, long length, TEHandle hTE)
  754.  ONEWORDINLINE(0xA9CF);
  755.  
  756. extern pascal CharsHandle TEGetText(TEHandle hTE)
  757.  ONEWORDINLINE(0xA9CB);
  758.  
  759. extern pascal void TEIdle(TEHandle hTE)
  760.  ONEWORDINLINE(0xA9DA);
  761.  
  762. extern pascal void TESetSelect(long selStart, long selEnd, TEHandle hTE)
  763.  ONEWORDINLINE(0xA9D1);
  764.  
  765. extern pascal void TEActivate(TEHandle hTE)
  766.  ONEWORDINLINE(0xA9D8);
  767.  
  768. extern pascal void TEDeactivate(TEHandle hTE)
  769.  ONEWORDINLINE(0xA9D9);
  770.  
  771. extern pascal void TEKey(CharParameter key, TEHandle hTE)
  772.  ONEWORDINLINE(0xA9DC);
  773.  
  774. extern pascal void TECut(TEHandle hTE)
  775.  ONEWORDINLINE(0xA9D6);
  776.  
  777. extern pascal void TECopy(TEHandle hTE)
  778.  ONEWORDINLINE(0xA9D5);
  779.  
  780. extern pascal void TEPaste(TEHandle hTE)
  781.  ONEWORDINLINE(0xA9DB);
  782.  
  783. extern pascal void TEDelete(TEHandle hTE)
  784.  ONEWORDINLINE(0xA9D7);
  785.  
  786. extern pascal void TEInsert(const void *text, long length, TEHandle hTE)
  787.  ONEWORDINLINE(0xA9DE);
  788.  
  789. extern pascal void TESetAlignment(short just, TEHandle hTE)
  790.  ONEWORDINLINE(0xA9DF);
  791.  
  792. extern pascal void TEUpdate(const Rect *rUpdate, TEHandle hTE)
  793.  ONEWORDINLINE(0xA9D3);
  794.  
  795. extern pascal void TETextBox(const void *text, long length, const Rect *box, short just)
  796.  ONEWORDINLINE(0xA9CE);
  797.  
  798. extern pascal void TEScroll(short dh, short dv, TEHandle hTE)
  799.  ONEWORDINLINE(0xA9DD);
  800.  
  801. extern pascal void TESelView(TEHandle hTE)
  802.  ONEWORDINLINE(0xA811);
  803.  
  804. extern pascal void TEPinScroll(short dh, short dv, TEHandle hTE)
  805.  ONEWORDINLINE(0xA812);
  806.  
  807. extern pascal void TEAutoView(Boolean fAuto, TEHandle hTE)
  808.  ONEWORDINLINE(0xA813);
  809.  
  810. extern pascal void TECalText(TEHandle hTE)
  811.  ONEWORDINLINE(0xA9D0);
  812.  
  813. extern pascal short TEGetOffset(Point pt, TEHandle hTE)
  814.  ONEWORDINLINE(0xA83C);
  815.  
  816. extern pascal Point TEGetPoint(short offset, TEHandle hTE)
  817.  THREEWORDINLINE(0x3F3C, 0x0008, 0xA83D);
  818.  
  819. extern pascal void TEClick(Point pt, Boolean fExtend, TEHandle h)
  820.  ONEWORDINLINE(0xA9D4);
  821.  
  822. extern pascal TEHandle TEStyleNew(const Rect *destRect, const Rect *viewRect)
  823.  ONEWORDINLINE(0xA83E);
  824.  
  825. extern pascal void TESetStyleHandle(TEStyleHandle theHandle, TEHandle hTE)
  826.  THREEWORDINLINE(0x3F3C, 0x0005, 0xA83D);
  827.  
  828. extern pascal TEStyleHandle TEGetStyleHandle(TEHandle hTE)
  829.  THREEWORDINLINE(0x3F3C, 0x0004, 0xA83D);
  830.  
  831. extern pascal void TEGetStyle(short offset, TextStyle *theStyle, short *lineHeight, short *fontAscent, TEHandle hTE)
  832.  THREEWORDINLINE(0x3F3C, 0x0003, 0xA83D);
  833.  
  834. extern pascal void TEStylePaste(TEHandle hTE)
  835.  THREEWORDINLINE(0x3F3C, 0x0000, 0xA83D);
  836.  
  837. extern pascal void TESetStyle(short mode, const TextStyle *newStyle, Boolean fRedraw, TEHandle hTE)
  838.  THREEWORDINLINE(0x3F3C, 0x0001, 0xA83D);
  839.  
  840. extern pascal void TEReplaceStyle(short mode, const TextStyle *oldStyle, const TextStyle *newStyle, Boolean fRedraw, TEHandle hTE)
  841.  THREEWORDINLINE(0x3F3C, 0x0002, 0xA83D);
  842.  
  843. extern pascal StScrpHandle TEGetStyleScrapHandle(TEHandle hTE)
  844.  THREEWORDINLINE(0x3F3C, 0x0006, 0xA83D);
  845.  
  846. extern pascal void TEStyleInsert(const void *text, long length, StScrpHandle hST, TEHandle hTE)
  847.  THREEWORDINLINE(0x3F3C, 0x0007, 0xA83D);
  848.  
  849. extern pascal long TEGetHeight(long endLine, long startLine, TEHandle hTE)
  850.  THREEWORDINLINE(0x3F3C, 0x0009, 0xA83D);
  851.  
  852. extern pascal Boolean TEContinuousStyle(short *mode, TextStyle *aStyle, TEHandle hTE)
  853.  THREEWORDINLINE(0x3F3C, 0x000A, 0xA83D);
  854.  
  855. extern pascal void TEUseStyleScrap(long rangeStart, long rangeEnd, StScrpHandle newStyles, Boolean fRedraw, TEHandle hTE)
  856.  THREEWORDINLINE(0x3F3C, 0x000B, 0xA83D);
  857.  
  858. extern pascal void TECustomHook(TEIntHook which, UniversalProcPtr *addr, TEHandle hTE)
  859.  THREEWORDINLINE(0x3F3C, 0x000C, 0xA83D);
  860.  
  861. extern pascal long TENumStyles(long rangeStart, long rangeEnd, TEHandle hTE)
  862.  THREEWORDINLINE(0x3F3C, 0x000D, 0xA83D);
  863.  
  864. extern pascal short TEFeatureFlag(short feature, short action, TEHandle hTE)
  865.  THREEWORDINLINE(0x3F3C, 0x000E, 0xA83D);
  866.  
  867. extern pascal OSErr TEGetHiliteRgn(RgnHandle region, TEHandle hTE)
  868.  THREEWORDINLINE(0x3F3C, 0x000F, 0xA83D);
  869.  
  870. extern pascal void TESetInlineInputContextPtr(TEHandle hTE, void *contextPtr)
  871.  THREEWORDINLINE(0x3F3C, 0x0010, 0xA83D);
  872.  
  873. extern pascal void TEConfirmInlineInput(TEHandle hTE)
  874.  THREEWORDINLINE(0x3F3C, 0x0011, 0xA83D);
  875.  
  876. extern pascal void TESetScrapLength(long length);
  877.  
  878. extern pascal OSErr TEFromScrap(void );
  879.  
  880. extern pascal OSErr TEToScrap(void );
  881.  
  882. extern pascal void TESetClickLoop(TEClickLoopUPP clikProc, TEHandle hTE);
  883.  
  884. extern pascal void TESetWordBreak(WordBreakUPP wBrkProc, TEHandle hTE);
  885.  
  886. extern pascal OSStatus TEInsertTextObject(TEHandle hTE, ConstTextObject textObject, TextObjectIndex startIndex, TextObjectIndex endIndex, long insertionStart, long insertionEnd, OptionBits fontSelectionOption)
  887.  THREEWORDINLINE(0x3F3C, 0x0012, 0xA83D);
  888.  
  889. extern pascal OSStatus TEExtractTextObject(TEHandle hTE, TextObject oldTextObject, TextObject *newTextObject, long textStart, long textEnd)
  890.  THREEWORDINLINE(0x3F3C, 0x0013, 0xA83D);
  891.  
  892. #endif
  893. #if FOR_SYSTEM8_COOPERATIVE
  894. /*
  895.     TEHandleModernAE is mostly for use by SWM to allow TSM to manage the TextEdit region
  896.     to be handled by TextEdit.
  897. */
  898. #if FOR_PTR_BASED_AE
  899. extern pascal OSStatus TEHandleModernAE(const AppleEvent *theAppleEvent, AppleEvent *reply, void *refCon, AEHandlerTableRef handlerTable);
  900.  
  901. #endif
  902. extern pascal UniversalProcPtr TEGetDoTextHook(void );
  903.  
  904. extern pascal void TESetDoTextHook(UniversalProcPtr value);
  905.  
  906. extern pascal UniversalProcPtr TEGetRecalcHook(void );
  907.  
  908. extern pascal void TESetRecalcHook(UniversalProcPtr value);
  909.  
  910. extern pascal UniversalProcPtr TEGetFindWordHook(void );
  911.  
  912. extern pascal void TESetFindWordHook(UniversalProcPtr value);
  913.  
  914. extern pascal Handle TEGetScrapHandle(void );
  915.  
  916. extern pascal void TESetScrapHandle(Handle value);
  917.  
  918. #endif
  919. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  920. #if CGLUESUPPORTED
  921. extern void teclick(Point *pt, Boolean fExtend, TEHandle h);
  922.  
  923. #endif
  924. #endif
  925. #if OLDROUTINENAMES
  926. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  927. #define TESetJust(just, hTE) TESetAlignment(just, hTE)
  928. #define TextBox(text, length, box, just) TETextBox(text, length, box, just)
  929. #define TEStylNew(destRect, viewRect) TEStyleNew(destRect, viewRect)
  930. #define SetStylHandle(theHandle, hTE) TESetStyleHandle(theHandle, hTE)
  931. #define SetStyleHandle(theHandle, hTE) TESetStyleHandle (theHandle, hTE)
  932. #define GetStylHandle(hTE) TEGetStyleHandle(hTE)
  933. #define GetStyleHandle(hTE) TEGetStyleHandle(hTE)
  934. #define TEStylPaste(hTE) TEStylePaste(hTE)
  935. #define GetStylScrap(hTE) TEGetStyleScrapHandle(hTE)
  936. #define GetStyleScrap(hTE) TEGetStyleScrapHandle(hTE)
  937. #define SetStylScrap(rangeStart, rangeEnd, newStyles, redraw, hTE) TEUseStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)
  938. #define SetStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)  TEUseStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)
  939. #define TEStylInsert(text, length, hST, hTE) TEStyleInsert(text, length, hST, hTE)
  940. #define TESetScrapLen(length) TESetScrapLength(length)
  941. #define TEGetScrapLen() TEGetScrapLength()
  942. #define SetClikLoop(clikProc, hTE) TESetClickLoop(clikProc, hTE)
  943. #define SetWordBreak(wBrkProc, hTE) TESetWordBreak(wBrkProc, hTE)
  944. #endif
  945. #endif
  946.  
  947. #if PRAGMA_ALIGN_SUPPORTED
  948. #pragma options align=reset
  949. #endif
  950.  
  951. #if PRAGMA_IMPORT_SUPPORTED
  952. #pragma import off
  953. #endif
  954.  
  955. #ifdef __cplusplus
  956. }
  957. #endif
  958.  
  959. #endif /* __TEXTEDIT__ */
  960.  
  961.